// 2013-9-14上午11:55:41  net.betou.core.service.impl.SystemRoleListener.java

package net.betou.core.service.impl;

import java.util.List;
import java.util.Set;

import net.betou.core.service.RoleListener;
import net.betou.trade.entity.main.Role;
import net.betou.trade.main.manager.role.SystemRoleMng;
import net.betou.trade.web.DBConstants;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 
 * @author 叶装装
 */
@Component
public class SystemRoleListener implements RoleListener{

	public void afterUpdate( Role bean, Set< String > perms ) {
		
		if( returnMethod( bean ) ){
			return;
		}
		
		List< Role > roleList = mng.listByIdentity( bean.getIdentity( ) + "d");
		
		if( roleList == null || roleList.size( ) == 0 ){
			return;
		}
		
		for ( Role r : roleList ){
			mng.update( r, perms );
		}
		
	}
	
	private boolean returnMethod( Role bean ){
		if( bean == null ){
			return true;
		}
		// 非默认
		if( !bean.getRoleDefault( ) ){
			return true;
		}
		// 非系统角色
		if( !bean.getManager( ) ){
			return true;
		}
		
		// 非读取
		if( !bean.getAllowRead( ) ){
			return true;
		}
		
		String identity = bean.getIdentity( );
		
		// 没有标识符
		if( StringUtils.isBlank( identity )){
			return true;
		}
		
		
		// 非机构或者代理商
		if( !DBConstants.SYSTEM_AGENCY_IDENTITY.equals( identity ) && !DBConstants.SYSTEM_PROXY_IDENTITY.equals( identity )){
			return true;
		}
	
		return false;
	}
	
	@Autowired
	private SystemRoleMng mng;

}
